﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Engine
{
	/// <summary>
	/// Base type of all Components
	/// 
	/// Components are both senders and receivers of PropertyChanged events.  On the sending
	/// side, they notify Connection objects of a change in an OutPort property.  On the
	/// receivng side, they are notified by Connection objects that data is ready on an InPort.
	/// </summary>
	public interface IComponent
	{
		/// <summary>
		/// Unique name for the IComponent instance
		/// </summary>
		string Name { get; set; }

		/// <summary>
		/// Override in child classes to specify what happens when this Component is reset to its initial state
		/// </summary>
		void Reset();
	}
}
